#ifndef __AGM_APPLICATION_HH__
#define __AGM_APPLICATION_HH__

#include "raytracer.h"
#include "anaglyph.h"
#include "chrono.h"
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

class Application
{
    protected:

        int    argc;
        char **argv;

        std::string sceFile;
        std::string outFile;

        unsigned int width;
        unsigned int height;

        bool         antialiasing;
        unsigned int recursivityLevel;

        bool anaglyph;


        virtual void showUsage() const;
        virtual bool processOptions();


    public:

        Application() : argc(0) , argv(0), antialiasing(false), recursivityLevel(1), anaglyph(false)
        {
        }
        virtual ~Application() {}
        Application(int _argc, char **_argv) : argc(_argc) , argv(_argv), antialiasing(false), recursivityLevel(1), anaglyph(false)
        {

        }

        virtual int exec();

};

#endif

